/**
 *
 * @param {array} position  经纬度
 * @param {object} service (name,layerId) name 地图文档的名称，layerId要素所在图层
 * @param {object}  docLayer  地图文档图层
 */
const POINT_STYLE = {
  Angle: 0,
  Color: 12,
  Space: 0,
  SymHeight: 12,
  SymID: 30,
  SymWidth: 12,
}

function addPoint({ position, service, docLayer, attr, map, draw }) {
  //1-1 设置点要素地理位置的信息
  //创建一个点形状，描述点形状的几何信息
  var gpoint = new Zondy.Object.GPoint(position[0], position[1]) //createPoint();
  //设置当前点要素的几何信息
  var fGeom = new Zondy.Object.FeatureGeometry({ PntGeom: [gpoint] })
  //1-2 样式信息
  //描述点要素的符号参数信息
  var pointInfo = new Zondy.Object.CPointInfo(POINT_STYLE)
  //设置当前点要素的图形参数信息
  var webGraphicInfo = new Zondy.Object.WebGraphicsInfo({
    //InfoType  1 点要素
    InfoType: 1,
    PntInfo: pointInfo,
  })
  //设置添加点要素的属性信息
  var attValue = attr.map((item) => item.value)

  //创建一个要素
  var feature = new Zondy.Object.Feature({
    fGeom: fGeom,
    GraphicInfo: webGraphicInfo,
    AttValue: attValue,
  })
  //设置要素为点要素
  feature.setFType(1)

  //2
  //创建一个要素数据集
  var featureSet = new Zondy.Object.FeatureSet()
  featureSet.clear()
  //设置属性结构
  //这个属性和数据库中的字段
  var cAttStruct = new Zondy.Object.CAttStruct({
    FldName: attr.map((item) => item.key),
    FldNumber: 0,
    FldType: attr.map((item) => item.type),
  })
  featureSet.AttStruct = cAttStruct
  //添加要素到要素数据集
  featureSet.addFeature(feature)
  //创建一个编辑服务类
  var editService = new Zondy.Service.EditDocFeature(
    service.name,
    service.layerId
    // {
    //   ip: "localhost",
    //   port: "6163", //访问IGServer的端口号，.net版为6163，Java版为8089
    // }
  )
  //执行添加点要素功能
  editService.add(featureSet, onPntSuccess(docLayer))
  /* 清除画笔 */
  map.value.removeInteraction(draw)
}
//添加点要素回调函数
function onPntSuccess(docLayer) {
  return function (data) {
    if (data.succeed) {
      alert("添加点要素成功！")

      docLayer.value.refresh()
    } else {
      alert("添加点要素失败！")
    }
  }
}

export { addPoint }
